package com.jsoft.service;

import com.jsoft.entity.*;
import com.jsoft.entity.Enterprise;
import com.jsoft.entity.Job;
import com.jsoft.entity.JobAndEnterpriseAndIndustry;
import com.jsoft.entity.PageBean;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;

import java.util.List;

/**
 * (Job)表服务接口
 *
 * @author makejava
 * @since 2025-03-14 23:30:25
 */
public interface JobService {
    /**
     * 查询我申请过的职位
     * @param jobName 职位名
     * @param userId 用户id
     * @param page 第几页
     * @param size 一页多少条
     * @return 查询结果
     */
    List<JobAndEnterpriseAndIndustry> getMyJobs(String jobName, String userId, int page, int size);

    /**
     * 三表联查
     *
     * @param jobName 前端传的职位关键字
     * @param page    第几页，1开始
     * @param size    一页多少条
     * @return
     */
    List<JobAndEnterpriseAndIndustry> selectJobAndEnterpriseAndIndustry(String jobName, int page, int size);

    /**
     * 查一共多少条
     *
     * @param jobName
     * @return 查询结果
     */
    int countJobs(String jobName);

    int countMyJobs(String jobName, String userId);

    /**
     * 放到下拉菜单里的职位名们
     *
     * @return 查询结果
     */
    List<Job> getJobNames();

    /**
     * 通过企业id查询该企业有哪些职位
     * @param enterpriseId 企业id
     * @return 查询结果
     */
    List<Job> getJobsByEnterpriseId(Integer enterpriseId);

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    Job queryById(Integer id);

    /**
     * 分页查询
     *
     * @param job         筛选条件
     * @param pageRequest 分页对象
     * @return 查询结果
     */
    Page<Job> queryByPage(Job job, PageRequest pageRequest);

    /**
     * 新增数据
     *
     * @param job 实例对象
     * @return 实例对象
     */
    Job insert(Job job);

    /**
     * 修改数据
     *
     * @param job 实例对象
     * @return 实例对象
     */
    Job update(Job job);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    boolean deleteById(Integer id);


    /**
     * 查询高薪工作
     *
     * @return
     */
    PageBean<Job> list(Integer pageNum, Integer pageSize);


    PageBean<Enterprise> queryId(Integer pageNum, Integer pageSize, Integer id);

    /**
     * 根据工作id查询工作
     *
     * @param pageNum
     * @param pageSize
     * @param id
     * @return
     */

    PageBean<Job> queryJobById(Integer pageNum, Integer pageSize, Integer id);

    /**
     * 根据行业id查询职位
     * @param pageNum
     * @param pageSize
     * @param id
     * @return
     */
    PageBean<Job> jobByIndustryId(Integer pageNum, Integer pageSize, Integer id);
}
